package es.duma.util.xsl;

import es.duma.util.log.Log;

import java.util.Hashtable;

import javax.xml.transform.Templates;

/**
 * Gestiona la cache de las plantillas de transformacion xsl
 */
public class CacheManager {
    
    /**
     * Los objetos cacheados se almacenan en la Hashtable cache
     */
    private static Hashtable cache=null;
    
    /**
     * Nombre o identificador para mostrar en los mensajes de log producidos por esta clase
     */
    private static final String LOG_ID="[Cache_Templates_XSL]";
    
    
    /**
     * Añade un objeto de tipo javax.xml.transform.Templates a la cache
     * @param template plantilla xsl compilada 
     * @param name
     */
    public static void putTemplate(Templates template,String name){
        if (cache==null){
            Log.debug(LOG_ID+" Se inicializa la cache");
            cache =new Hashtable();
        }
        
        cache.put(name,template);
        Log.debug(LOG_ID+" Se ha añadido la plantilla "+name+" en la cache");
        
    }
    
    /**
     * Se solicita la template compilada a la cache
     * @param name path completo de la plantilla xsl que se quiere obtener compilada desde la cache
     * @return plantilla compilada javax.xml.transform.Templates [null si la plantilla no estaba en la cache]
     */
    public static Templates getTemplate(String name){
        if (cache==null){
            Log.debug(LOG_ID+" Se inicializa la cache");
            cache =new Hashtable();
            return null;
        }else{
        
            Log.debug(LOG_ID+" Se busca la plantilla en la cache");
            
            if (cache.containsKey(name)){
                Log.debug(LOG_ID+" CACHE La plantilla "+name+" esta compilada en la cache");
                return (Templates)cache.get(name);
            }else{
                Log.debug(LOG_ID+" CACHE La plantilla "+name+" no esta en la cache");
                return null;
            }
        }
    }
    
}
